package mx.ipn.persistencia;

import mx.ipn.persistencia.dao.*;
import mx.ipn.persistencia.mysql.FabricaDeDAOsMySQL;

public abstract class FabricaDeDAOs {
	// Habrá un método por cada DAO creado.
	// Las fábricas en concreto deberán crear dichos métodos*/
    public abstract PuestoSalarioDAO getPuestoSalarioDAO();
    
	public abstract BitacoraSDAO getBitacoraSDAO();
	
	public abstract BaseDAO getBaseDAO();

	public abstract BitacoraAccesoDAO getBitacoraAccesoDAO();

	public abstract BitacoraAsistenciaDAO getBitacoraAsistenciaDAO();

	public abstract BitacoraCastigoChoferDAO getBitacoraCastigoChoferDAO();

	public abstract BitacoraCastigoUnidadDAO getBitacoraCastigoUnidadDAO();

	public abstract BitacoraChoferUnidadDAO getBitacoraChoferUnidadDAO();

	public abstract BitacoraHorarioDAO getBitacoraHorarioDAO();

	public abstract BitacoraEmpleadoDAO getBitacoraEmpleadoDAO();

	public abstract BitacoraEconomicoDAO getBitacoraEconomicoDAO();

	public abstract BitacoraPuestoDAO getBitacoraPuestoDAO();

	public abstract BitacoraServicioDAO getBitacoraServicioDAO();

	public abstract BitacoraUnidadDAO getBitacoraUnidadDAO();

	public abstract BitacoraResponsableDAO getBitacoraResponsableDAO();

	public abstract BitacoraServicioTarjetaDAO getBitacoraServicioTarjetaDAO();

	public abstract CalleDAO getCalleDAO();

	public abstract CategoriaServicioDAO getCategoriaServicioDAO();

	public abstract ChoferDAO getChoferDAO();

	public abstract ClienteDireccionDAO getClienteDireccionDAO();

	public abstract ClienteRfcDAO getClienteRfcDAO();

	public abstract ClienteDAO getClienteDAO();

	public abstract ColoniaDAO getColoniaDAO();

	public abstract ColoniaCalleDAO getColoniaCalleDAO();

	public abstract ColorAutoDAO getColorAutoDAO();

	public abstract ComprobantePercepcionDescuentoDAO getComprobantePercepcionDescuentoDAO();

	/*
	 * public abstract CuentaDAO getCuentaDAO();
	 */
	
	public abstract DatosNomina2DAO getDatosNominaDAO();
	
	public abstract DescuentoEmpleadoDAO getDescuentoEmpleadoDAO();

	public abstract DescuentoHistorialDAO getDescuentoHistorialDAO();

	public abstract DescuentoPuestoDAO getDescuentoPuestoDAO();

	public abstract DescuentoDAO getDescuentoDAO();

	public abstract DetalleFacturaDAO getDetalleFacturaDAO();

	public abstract DetallePrefacturaDAO getDetallePrefacturaDAO();

	public abstract DiaFestivoDAO getDiaFestivoDAO();

	public abstract DireccionDAO getDireccionDAO();

	public abstract EconomicoDAO getEconomicoDAO();

	public abstract EmpleadoDAO getEmpleadoDAO();

	public abstract EstadoDAO getEstadoDAO();

	public abstract FactorDAO getFactorDAO();

	public abstract FacturaDAO getFacturaDAO();

	public abstract FormaPagoDAO getFormaPagoDAO();

	public abstract HorarioDAO getHorarioDAO();

	public abstract InstitucionFinancieraDAO getInstitucionFinancieraDAO();

	public abstract MarcaDAO getMarcaDAO();

	public abstract MotivoDAO getMotivoDAO();

	public abstract MunicipioDAO getMunicipioDAO();

	public abstract PercepcionEmpleadoDAO getPercepcionEmpleadoDAO();

	public abstract PercepcionHistorialDAO getPercepcionHistorialDAO();

	public abstract PercepcionPuestoDAO getPercepcionPuestoDAO();

	public abstract PercepcionDAO getPercepcionDAO();

	public abstract PersonaDAO getPersonaDAO();

	public abstract PuestoDAO getPuestoDAO();

	public abstract RangoDAO getRangoDAO();

	public abstract ResponsableDAO getResponsableDAO();

	public abstract RfcDAO getRfcDAO();

	public abstract StatusDAO getStatusDAO();

	public abstract ServicioSistemaDAO getServicioSistemaDAO();

	public abstract SubmarcaDAO getSubmarcaDAO();

	public abstract TarjetaDAO getTarjetaDAO();

	public abstract TarjetaClienteDAO getTarjetaClienteDAO();

	public abstract TipoBaseDAO getTipoBaseDAO();

	public abstract GrupoUsuarioDAO getGrupoUsuarioDAO();

	public abstract TipoEmpleadoDAO getTipoEmpleadoDAO();

	public abstract TipoMotivoDAO getTipoMotivoDAO();

	public abstract TipoPercepcionDescuentoDAO getTipoPercepcionDescuentoDAO();

	public abstract TipoServicioDAO getTipoServicioDAO();

	public abstract TipoTarjetaDAO getTipoTarjetaDAO();

	public abstract TurnoDAO getTurnoDAO();

	public abstract UnidadDAO getUnidadDAO();

	public abstract UsuarioDAO getUsuarioDAO();

	public static FabricaDeDAOs getFabricaDeDAOs(int cualFabrica) {

		switch (cualFabrica) {
		case mx.ipn.Constantes.FABRICA_DAOS_MYSQL:
			return new FabricaDeDAOsMySQL();
			// case mx.ipn.Constantes.FABRICA_DAOS_ORACLE:
			// return new FabricaDeDAOsOracle();
		default:
			return null;
		}
	}

}
